package com.spring.service;

import com.spring.config.BeanNameAware;
import com.spring.config.InitializingBean;
import com.spring.context.*;

@Component("userService")
@Scope("singleton")
public class UserService implements UserInterface,BeanNameAware,InitializingBean {
    //自动注入orderService
    @Autowired
    private OrderService orderService;


    //通过增强器进行实现，对注解上的value值直接付给属性
    @HscValue("hsc")
    private String testName;

    private String beanName;

    /**
     * 对象的名称做修改
     *
     * @param name
     */
    @Override
    public void setBeanName(String name) {
        //测试通过Aware接口的方式对当前对象的属性值进行赋值操作
        System.out.println("自定义扩展："+name+"对象通过BeanNameAware接口来对beanName进行一次修改======================");
        this.beanName = name;
    }

    /**
     * 属性完成成赋值有再提供一个机会来修改属性的行
     *
     * @throws Exception
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println(this.getClass() + "调用了afterPropertiesSet方法。。。。");
    }

    @Override
    public void test() {
        //测试orderService有没自动的注入
        System.out.println("目标方法开始执行了test（）方法。。。。。。。。。。");
        System.out.println("测试orderService有没自动的注入：自动注入对象以赋值：" + orderService);
    }

    public String getTestName() {
        return testName;
    }


}
